package com.lbh.platforms.windows;

import com.lbh.platforms.windows.structures.user.FARPROC;
import com.sun.jna.*;

/***
 * project:JRuntime
 * package:com.lbh
 *
 * @author user:lenovo QQ:1601078366
 * @date 2021/10/17 23:56
 * @version V1.0
 */
@SuppressWarnings({"AlibabaLowerCamelCaseVariableNaming", "AlibabaAbstractMethodOrInterfaceMethodMustUseJavadoc", "unused"})
public interface WinKernel32 extends Library {

    WinKernel32 ins = Native.load("kernel32", WinKernel32.class);

    void Sleep(int millis);
    Pointer GetModuleHandleA (String lpModuleName);
    Pointer GetModuleHandleW (WString lpModuleName);
    Pointer LoadLibraryA(String lpLibFileName);
    Pointer LoadLibraryW(WString lpLibFileName);
    void FreeLibraryAndExitThread (Pointer hLibModule, int dwExitCode);
    boolean DisableThreadLibraryCalls (Pointer hLibModule);
    boolean FreeLibrary (Pointer hLibModule);
    FARPROC GetProcAddress (Pointer hModule, String lpProcName);
    int GetModuleFileNameA (Pointer hModule, String lpFilename, int nSize);
    int GetModuleFileNameW (Pointer hModule, WString lpFilename, int nSize);
    String GetCommandLineA ();
    WString GetCommandLineW ();
    boolean SetCurrentDirectoryA (String lpPathName);
    boolean SetCurrentDirectoryW (WString lpPathName);
    int GetCurrentDirectoryA (int nBufferLength, String lpBuffer);
    int GetCurrentDirectoryW (int nBufferLength, WString lpBuffer);
}
